package com.zbkj.service.service.device;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.common.model.device.Device;
import com.zbkj.common.model.device.MqttConfig;

/**
 * 设备服务接口
 * +----------------------------------------------------------------------
 * | Author: xiaolic
 * +----------------------------------------------------------------------
 */
public interface DeviceService extends IService<Device> {
    
    /**
     * 通过字段注册设备并返回设备ID
     * @param macAddress MAC地址
     * @param imei IMEI号
     * @return 设备SN编号
     */
    String registerDeviceByFields(String macAddress, String imei);
    
    /**
     * 根据设备ID查找设备
     * @param deviceId 设备ID
     * @return 设备信息
     */
    Device getDeviceById(Long deviceId);
    
    /**
     * 根据设备MAC地址查找设备
     * @param macAddress MAC地址
     * @return 设备信息
     */
    Device getDeviceByMac(String macAddress);
    
    /**
     * 根据设备IMEI查找设备
     * @param imei IMEI
     * @return 设备信息
     */
    Device getDeviceByImei(String imei);

    Device getDeviceBySn(String deviceSN);
    
    /**
     * 生成设备SN编号
     * @return SN编号
     */
    String generateDeviceSn();
    
    /**
     * 根据设备MAC地址获取MQTT配置
     * @param macAddress MAC地址
     * @return MQTT配置信息
     */
    MqttConfig getMqttConfigByMac(String macAddress);
    
    /**
     * 根据设备IMEI获取MQTT配置
     * @param imei IMEI
     * @return MQTT配置信息
     */
    MqttConfig getMqttConfigByImei(String imei);
}
